<script>
// Object.assign

// 语法： Object.assign( target,source1,source2,... )

// 描述：对象的合并( 拷贝 )，将源对象（source），复制（浅拷贝）到目标对象 ( target )，并且会返回合并后的对象

// 代码案例：

let obj1={
    a:1,
    b:2,
}

let obj2={
    c:3,
    d:4
}

let obj3={
    e:5,
    f:6
}

let newobj=Object.assign(obj1,obj2,obj3)
console.log(obj1);
console.log(newobj);






// Object.keys

// 语法：Object.keys( obj )

// 描述：返回一个数组，成员是参数对象自身的属性的键名

// 代码案例：

let obj={
    user:"高飞",
    age:18,
    sex:"nv"
}
/* let arr=[]
for(let k in  obj){
    console.log(k);//user  age sex
    // 如果想要使用属性名，必须在for in循环里面去使用
    arr.push(k)
}
console.log(arr);// ['user', 'age', 'sex']
 */

 let arr=Object.keys(obj)
 console.log(arr);// ['user', 'age', 'sex']





// Object.values

// 语法：Object.values( obj )

// 描述：返回一个数组，成员是参数对象自身的属性的值

// 代码案例：


let varr=Object.values(obj)
console.log(varr);// ['高飞', 18, 'nv']









// JSON.stringify

// 语法：JSON.stringify( obj )

// 描述：把js对象转换成json字符串

// 代码案例：

let userinfo={
    name:"小宇",
    height:"180",
    weight:"180",
    age:18,
    sex:"男"
}

// 我需要把小宇的信息提交到后台，但是后台只能接受字符串（把json数据转成字符串）
console.log((123).toString());//"123"
console.log(String(null));"null"
console.log(userinfo.toString());//[object Object]  复杂的数据类型不能使用简单的String或者toString 去转字符串

// 如果是数组或者对象需要转成字符串，那么就使用JSON.stringfiy
let userinfostr=JSON.stringify(userinfo)
console.log(userinfostr);//{"name":"小宇","height":"180","weight":"180","age":18,"sex":"男"}
// 应用：前端向后端传输数据的时候可能会用到



// JSON.parse

// 语法：JSON.parse( jsonstr)

// 描述：把json字符串转换成js对象

// 代码案例：

// 后端有这样的数据，需要传递给前端：
let userstr='{"phone":"苹果13","price":6000}'
console.log(JSON.parse(userstr));//{phone: '苹果13', price: 6000}

// 应用：后端向前端传输数据的时候，传输的是字符串，前端拿到字符串之后通过JSON.parse转成真正的数组或对象
// 得到真正的对象之后，然后把数据渲染到页面



let userarr=[
    {
        username:"zs"
    },{
        username:"ls"
    }
]
console.log(JSON.stringify(userarr));//[{"username":"zs"},{"username":"ls"}]


let userinforstr=`["北京","上海","深圳"]`
console.log(JSON.parse(userinforstr));// ['北京', '上海', '深圳']


</script>